package com.zmn.mcc.business.interfaces.pic;

import com.zmn.common.dto.AliyunOssStsDTO;
import com.zmn.common.dto.ResultDTO;

import java.io.File;
import java.io.InputStream;

/**
 * @author duanzuocai
 * @version v1.0
 * @类说明：阿里云 OSS 图片上传
 * @图片访问路经：https://img1.xiujiadian.com/dev/sm/order/04481230.jpg
 * @since 2018/11/20 10:57
 */
public interface PicUploadBService {

    /**
     * 上传文件
     *
     * @param directory 文件目录
     * @param fileName  文件名
     * @param file      上传图片文件
     * @return
     */
    ResultDTO uploadPic(String directory, String fileName, File file);

    /**
     * 上传文件
     *
     * @param directory 文件目录
     * @param fileName  文件名
     * @param file      上传图片文件
     * @param maxWidth  最大宽度：像素
     * @param maxHeight 最大高度：像素
     * @return
     */
    ResultDTO uploadPic(String directory, String fileName, File file, Integer maxWidth, Integer maxHeight);

    /**
     * 上传文件
     *
     * @param directory   文件目录
     * @param fileName    文件名
     * @param inputStream 上传图片文件流
     * @return
     */
    ResultDTO uploadPic(String directory, String fileName, InputStream inputStream);

    /**
     * 上传文件 - 不压缩
     *
     * @param directory   文件目录
     * @param fileName    文件名
     * @param inputStream 上传图片文件流
     * @return
     */
    ResultDTO uploadPicUnpressed(String directory, String fileName, InputStream inputStream);

    /**
     * 上传文件
     *
     * @param directory   文件目录
     * @param fileName    文件名
     * @param inputStream 上传图片文件流
     * @return
     */
    ResultDTO uploadFile(String directory, String fileName, InputStream inputStream);

    /**
     * 上传文件
     *
     * @param directory   文件目录
     * @param fileName    文件名
     * @param inputStream 上传图片文件流
     * @param maxWidth    最大宽度：像素
     * @param maxHeight   最大高度：像素
     * @return
     */
    ResultDTO uploadPic(String directory, String fileName, InputStream inputStream, Integer maxWidth, Integer maxHeight);


    /**
     * 上传文件 - 不压缩
     *
     * @param directory   文件目录
     * @param fileName    文件名
     * @param inputStream 上传图片文件流
     * @param maxWidth    最大宽度：像素
     * @param maxHeight   最大高度：像素
     * @return
     */
    ResultDTO uploadPicUnpressed(String directory, String fileName, InputStream inputStream, Integer maxWidth, Integer maxHeight);

    /**
     * 获取图片 Url
     *
     * @param directory 文件目录
     * @param fileName  文件名
     * @return 比如：
     */
    String getPicUrl(String directory, String fileName);

    /**
     * 获取文件 Url
     *
     * @param directory 文件目录
     * @param fileName  文件名
     * @return 比如：
     */
    String getFileUrl(String directory, String fileName);

    /**
     * 获取文件上传临时权限
     * 有效期两小时
     *
     * @param serviceId 服务ID，用于统计
     * @return
     */
    AliyunOssStsDTO getStsAuther(String serviceId);
}
